#ifndef _GRAPHICSCLASS_H_
#define _GRAPHICSCLASS_H_

#include "d3dclass.h"
#include "cameraclass.h"
#include "modelclass.h"
#include "tesselationshaderclass.h"
#include "textureshaderclass.h"
#include "blurshaderclass.h"
#include "lightclass.h"
#include "DOFshaderclass.h"
#include <vector>


typedef std::vector<ModelClass*> ModelsArray;

static const bool	FULL_SCREEN		= false;
static const bool	VSYNC_ENABLED	= false;
//static const float	SCREEN_DEPTH	= 1000.0f;
//static const float	SCREEN_NEAR		= 1;
static const bool	BLUR_ENABLED	= true;


class GraphicsClass
{
public:
	GraphicsClass();

	bool Initialize(int, int, HWND);
	void Shutdown();
	bool Frame(InputClass* input);

private:
	bool PreRender();
	bool Render();
	bool PostRender();
	bool RenderWorld();

private:
	D3DClass				*m_D3D;
	CameraClass				*m_Camera;
	TesselationShaderClass	*m_TessShader;
	LightsContainer			*m_Lights;
	ModelsArray				*m_Models;
	Material				*m_Material;
	bool					m_blurEnabled;

	//BlurShaderClass	*m_blur;
	DOFShaderClass	*m_DOF;


};

#endif